package com.ayu.shortlink.engine.util;

/**
 * Lua 脚本执行结果解析器的工具类
 */
public class LuaScriptUtil {
    private static final Integer SECOND_FIELD_BITS = 14;

    /**
     * 判断 Lua 脚本执行是否成功
     * @return true 成功 false 失败
     */
    public static boolean isSuccess(long code){
        return code == 0;
    }

    /**
     * 获取 Lua 脚本结果信息(第二个值)
     * @param combine Lua脚本返回结果
     * @return 结果信息
     */
    public static long extractFirstField(long combine){
        long var = 1L << SECOND_FIELD_BITS;
        long code = 0;
        while ((var & combine) == 0){
            code++;
            var <<= 1L;
        }
        return code;
    }

    /**
     * 获取 Lua脚本的第二个值
     * @param combine 总值
     * @param firstField 第一个值
     * @return 第二个值
     */
    public static long extractSecondField(long combine,long firstField){
        return combine ^ 1L << (SECOND_FIELD_BITS+firstField);
    }
}
